home *** CD-ROM | disk | FTP | other *** search
Wrap
5 CLS:SCREEN 1 10 PRINT TAB(14) "3-D PLOTTING": PRINT TAB(14) "------------":PRINT :PRINT 20 INPUT "HAVE YOU ALREADY ENTERED A NEW EQUATION OF THE FORM Z=F(X,Y) IN LINE 1000";A$: IF LEFT$ (A$,1)="N" THEN PRINT:PRINT :PRINT " THEN ENTER EQUATION FOR Z IN LINE NUMBER 1000 BENEATH 'Break in 23','OK' MESSAGE BELOW."ELSE 25 21 PRINT " EXAMPLE:":PRINT 22 PRINT "1000 Z=EXP(-(X*X+Y*Y))":PRINT :PRINT 23 PRINT " THEN START PROGRAM AGAIN BY TYPING 'RUN' OR HITTING F2 FUNCTION KEY.":PRINT :PRINT :STOP 25 CLS:PRINT : INPUT "ENTER GRID WIDTH (1-FINE,50-COARSE): 10 ";A$: IF A$ = "" THEN GW =10: GOTO 35 30 GW = VAL (A$) 35 INPUT "ACCURACY (1-FINE,10-POOR): 5 ";A$: IF A$ = "" THEN AC =5: GOTO 50 40 AC = VAL (A$) 50 C$ = "-----------": B$="/ /": C = SQR (2) / 2: GOSUB 500: OX =96 :OY = 32 60 SCREEN 1,1 70 FOR X=XU TO XL STEP -GW*XM: GOSUB 800 80 FOR Y=YL TO YU STEP AC*YM: GOSUB 1000 : GOSUB 1045: NEXT : Y=YU: GOSUB 1000 : GOSUB 1045: NEXT 90 X = XL: GOSUB 800: FOR Y = YL TO YU STEP AC * YM: GOSUB 1000: GOSUB 1045 : NEXT 95 FOR Y = YL TO YU STEP GW * YM: GOSUB 900 100 FOR X = XL TO XU STEP AC * XM: K = (X + TX) / XM * C 110 GOSUB 1000: GOSUB 1045: NEXT : K = (XU +TX) / XM * C: GOSUB 1000: GOSUB 1045: NEXT 115 Y = YU: GOSUB 900: FOR X = XL TO XU STEP AC * XM: K = (X + TX) / XM * C: GOSUB 1000: GOSUB 1045: NEXT 120 INPUT"SAVE PLOT";A$: IF LEFT$ (A$,1)="N" THEN END 130 LOCATE 1,1:INPUT" FILE'S NAME";N$:LOCATE 1,1:PRINT " " 140 LOCATE 1,1:INPUT" EQUATION";Z$:LOCATE 1,1:PRINT " " 145 LOCATE 1,1:PRINT N$:LOCATE 1,15:PRINT Z$ 150 BSAVE N$,0,&H4000 200 'TO RECOVER PICTURE SAVED BY BSAVE, USE BLOAD AS PER THIS EXAMPLE: DEF SEG=&HB800 BLOAD "PICTURE",0 400 END 500 CLS 505 LOCATE 7,16:PRINT C$:LOCATE ,15: PRINT B$:LOCATE ,14:PRINT B$: LOCATE ,13:PRINT B$:LOCATE ,12: PRINT B$:LOCATE ,11:PRINT C$: 506 LINE (120,1)-(120,125) 510 LOCATE 6,20:INPUT "X MIN: -3 ";A$: IF A$ = "" THEN XL = -3: GOTO 520 515 XL = VAL (A$) 520 LOCATE 13,14:INPUT "X MAX: 3 ";A$: IF A$ = "" THEN XU = 3: GOTO 530 525 XU = VAL (A$) 530 LOCATE 9,2: INPUT "Y MIN: -3 ";A$: IF A$ = "" THEN YL = -3: GOTO 540 535 YL = VAL (A$) 540 LOCATE 9,24:INPUT "Y MAX: 3 ";A$: IF A$ = "" THEN YU = 3: GOTO 550 545 YU = VAL (A$) 550 LOCATE 16,16:INPUT "Z MIN: 0 ";A$: IF A$ = "" THEN ZL = 0: GOTO 560 555 ZL = VAL (A$) 560 LOCATE 2,16:INPUT "Z MAX: 1 ";A$: IF A$ = "" THEN ZU = 1: GOTO 567 565 ZU = VAL (A$) 567 LOCATE 20,5:INPUT "SCALING FACTOR: X AXIS = 1";S$: IF S$="" THEN XS=1: GOTO 570 569 XS = VAL (S$) 570 LOCATE 21,21:INPUT "Y AXIS = 1";S$: IF S$= "" THEN YS=1: GOTO 572 571 YS = VAL (S$) 572 LOCATE 22,21:INPUT "Z AXIS = 1";S$: IF S$= "" THEN ZS=1: GOTO 580 575 ZS = VAL (S$) 580 ZM =(ZU-ZL)/(160*ZS): XM =(XU-XL)/ (130*XS): YM =(YU-YL)/(180*YS) 590 TX =0-XL: TY =0-YL: TZ =-80*ZM-ZL: RETURN 800 K =(X+TX)/XM*C: Y =YL: GOSUB 1000: U =I: V =J: RETURN 900 X =XL: K =(X+TX)/XM*C: GOSUB 1000: U =I: V =J: RETURN 999 ' ENTER FORMULA IN LINE 1000 i.e. Z=SINX+SINY OR Z=SINX-COSY Z=X*X+Y*Y OR Z=SINX+COS(2*Y) 1000 Z=EXP(-(X*X+Y*Y)) 1010 I =OX+(Y+TY)/YM-K: J =OY-(Z+TZ)/ZM+K: IF I<0 THEN I=0 1020 IF I > 319 THEN I= 319 1030 IF J > 199 THEN J= 199 1040 IF J < 0 THEN J= 0 1042 RETURN 1045 IF(U=0 AND I=0)OR (U=319 AND I=319) OR(V=0 AND J=0)OR (J=199 AND V=199) THEN U=I: V=J: RETURN 1050 LINE (U,V)-(I,J): U=I: V=J: RETURN (U=319 AND I=319) OR(V=0 AND J=0)OR (J=199 AND V=199) THEN U=I: V=J: RETURN 1050 LINE (U,V)-(I,J): U=I: V=J: RETURN